#include"semaphore.h"
Semaphore::Semaphore(int initSize ):initSize_(initSize),isExit_(false){}
Semaphore::~Semaphore()
{
   isExit_ = false;
}
void Semaphore::Post()
{
   if(isExit_)
   {
      return ;
   }
   std::unique_lock<std::mutex> lock(mutex_);
   initSize_++;
   //Linux下的条件变量的析构函数没有释放资源，导致这里会阻塞
   condition_variable_.notify_all();
}
void Semaphore::Wait()
{
   if(isExit_)
   {
      return ;
   }
  std::unique_lock<std::mutex> lock(mutex_);
   condition_variable_.wait(lock,[&]()->bool { return initSize_ > 0;});
   initSize_--;

}